/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.mtc.dgac.licencias.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import pe.gov.mtc.dgac.licencias.bean.AuditoriaProcedimientoTO;
import pe.gov.mtc.dgac.licencias.bean.AuditoriaProcedimientoTOPK;
import pe.gov.mtc.dgac.licencias.bean.ProcedimientoTO;
import pe.gov.mtc.dgac.licencias.service.AuditoriaProcedimientoService;
import pe.gov.mtc.dgac.licencias.service.AuditoriaService;
import pe.gov.mtc.dgac.licencias.util.Utiles;

/**
 *
 * @author elvis
 */
@Controller
@Scope("session")
public class AuditoriaProcesoController {

    @Autowired
    private AuditoriaProcedimientoService auditoriaProcedimientoService;
    @Autowired
    private AuditoriaService auditoriaService;
            
    @RequestMapping("/calidad/laudproc.htm")
    public String laudproc(@RequestParam("codigo") int id,HttpServletRequest request, ModelMap model) {
        System.out.println("id auditoria " + id);
        AuditoriaProcedimientoTO audproc = new AuditoriaProcedimientoTO();
        audproc.setAuditoriaTO(auditoriaService.obtenerAuditoria(id));
        model.put("lprocedimientosaudit", auditoriaProcedimientoService.listarAuditProc(id,0));
        model.put("baudproc", audproc);
        System.out.println("calidad/laudproc");
        return "calidad/laudproc";
    }
    
    @RequestMapping("/calidad/baudproc.htm")
    public String baudproc(HttpServletRequest request,ModelMap model) {
        System.out.println("calidad/baudproc");
        model.put("lprocedimientosaudit", auditoriaProcedimientoService.listarAuditProc(0, 0));
        model.put("baudproc", new AuditoriaProcedimientoTO());
        return "calidad/baudproc";
    }
    
    @RequestMapping("/calidad/naudproc.htm")
    public String naudproc(@RequestParam("codAuditoria") int id,HttpServletRequest request,ModelMap model) {
        System.out.println("calidad/naudproc");
        AuditoriaProcedimientoTO audproc = new AuditoriaProcedimientoTO();
        audproc.setAuditoriaTO(auditoriaService.obtenerAuditoria(id));
        model.put("naudproc", audproc);
        model.put("lcombosProcesos", auditoriaProcedimientoService.listarProcesos());
        return "calidad/naudproc";
    }
    
    @RequestMapping("/calidad/editAudproc.htm")
    public String editaudproc(@RequestParam("c1") int id,@RequestParam("c2") int id2,HttpServletRequest request,ModelMap model) {
        System.out.println("calidad/maudproc");
        model.put("naudproc", auditoriaProcedimientoService.obtenerAuditProc(id, id2));
        model.put("lcombosProcesos", auditoriaProcedimientoService.listarProcesos());
        return "calidad/naudproc";
    }
     
     @RequestMapping("/calidad/verAudproc.htm")
    public String verAudproc(@RequestParam("c1") int id,@RequestParam("c2") int id2,HttpServletRequest request,ModelMap model) {
        System.out.println("calidad/daudproc");
        model.put("daudproc",auditoriaProcedimientoService.obtenerAuditProc(id, id2));
        return "calidad/daudproc";
    }
     
      @RequestMapping("/calidad/delAudproc.htm")
    public String delAudproc(@RequestParam("c1") int id,@RequestParam("c2") int id2,HttpServletRequest request,ModelMap model) {
        System.out.println("calidad/delAudproc");
        auditoriaProcedimientoService.eliminarAuditProc(id, id2); 
        return laudproc(id, request, model);
    }
      
    @RequestMapping("/calidad/raudproc.htm")
    public String raudproc(@Valid AuditoriaProcedimientoTO naudproc, BindingResult result,HttpServletRequest request,ModelMap model) {
        try {
            System.out.println("calidad/raudproc");            
            naudproc.setFecCrea(new Date());
            naudproc.setFecModif(new Date());
            naudproc.setFecInicEjec( Utiles.stringToDate(request.getParameter("fecInicEjec"), "dd/MM/yyyy"));
            naudproc.setFecTermEjec(Utiles.stringToDate(request.getParameter("fecTermEjec"), "dd/MM/yyyy"));
            
            AuditoriaProcedimientoTOPK pk = new AuditoriaProcedimientoTOPK(
                    naudproc.getProcedimientoTO().getCodProcedimiento(),
                    naudproc.getAuditoriaTO().getCodAuditoria()
                    );
            naudproc.setAuditoriaProcedimientoTOPK(pk);
            
            System.out.println("naudproc.setFecTermEjec "  + naudproc.getFecTermEjec() );
            auditoriaProcedimientoService.registrarAudtProc(naudproc);
            return laudproc(naudproc.getAuditoriaTO().getCodAuditoria().intValue(), request, model);   
        } catch (Exception e) {
            e.printStackTrace();
            model.put("naudproc", naudproc);
            model.put("lcombosProcesos", auditoriaProcedimientoService.listarProcesos());
            return "calidad/naudproc";
        }
    }

     
    @RequestMapping(value = "/*/comboProcedimiento.htm", method = RequestMethod.POST)
    public String comboProcedimiento(@RequestParam("cod") int cod,ModelMap model,HttpServletRequest request){
        request.getSession().setAttribute("lcombosProcedimientos", auditoriaProcedimientoService.listarProdedimientos(cod));
        return "ajax/cmbProcedimiento";
    }
        
}
